import { OrgTagEnum, ReplyTypeEnum } from '@/constants/enum';

// 因子新增
export interface IFactorAdd {
  factorNo?: string;
  factorName: string;
  enName: string;
  category: string;
  country: string;
  emissionFactor: string;
  factorUnit: string;
  baseYear: string;
  boundary: string;
  /**
   * 数据来源
   */
  factorDataSource: string;
  version: string;
  attachment: string;
  comment: string;
}

// 因子详情 返回参数
export interface IFactorDetail extends IFactorAdd {
  /**
   * 因子来源
   */
  factorSource: string;
  /**
   * 来源类型
   */
  factorCreateType: string;
  attachmentName: string;
  creator: string;
  enterpriseName: string;
  email: string;
  price: string;
  validStartDate: string;
  validEndDate: string;
  approval: string;
  status: string;
}

// 查询回复模型的基本信息接口 请求入参
export interface GetModelBasicInfoParams {
  // 请求编号
  requestNo: string;
  // 模型编号
  modelNo: string;
  // 标识
  flag: string;
}

// 查询回复模型的基本信息接口 请求出参
export interface GetModelBasicInfoResult {
  // 模型名称
  name: string;
  // 规格
  specification: string;
  // 核算单位
  unit: string;
  // 数据采集周期
  baseYear: string;
  // 重量单位
  weight: string;
  //	重量单位
  weightUnit: string;
  // 产品产地
  manufactureAddress: string;
  // 核算边界
  accountBoundary: string;
  // 分供方名称
  coopName: string;
  // 联系人
  coopContacts: string;
  // 手机号
  coopPn: string;
  // 回复类型
  replyType: keyof typeof ReplyTypeEnum;
  // 核算结果
  accountResult: string;
  // 核算时间
  accountTime: string;
  // 核算结果单位
  calcUnit: string;
  // 核算数量
  num: number;
  // 产品编码
  code: string;
  // 适用产品编码
  applyProductCode: string[];
  // 报告编号
  modelNo: string;
  // 报告名称
  reportName: string;
  // 报告地址
  reportUrl: string;
  // 数据版本
  dataVersion: string;
  // 认证机构
  caName: string;
  // 取舍规则
  arRules: string;
}

// 获取模型列表 返回参数
export interface GetDataRequestModelListResult {
  // 模型编号
  modelNo: string;
  // 模型名称
  name: string;
}

/**
 * 获取请求方相关信息
 */
export interface GetRequestInfoResult {
  // 编码
  code: string;
  // 核算数量
  num: string;
  // 单位
  unit: string;
  // 数据采集周期
  baseYear: string;
  // 模型名称
  sourceModelName: string;
  // 接收状态
  receiveState: string;
  auditOpinion: string;
  auditResult: string;
  /**
   * 是否是主动发送
   */
  activeFlag: boolean;
}

/**
 * 获取活动数据填报详情 返回结果
 */
export interface GetAdTaskDetailResult {
  taskNo: string;
  taskName: string;
  /**
   * 公司名称
   */
  companyName: string;
  /**
   * 组织标签
   */
  organizationTag: keyof typeof OrgTagEnum;
  /**
   * 填报周期
   */
  fillPeriod: string;
  /**
   * 产量
   */
  yield: string;
  /**
   * 工作天数
   */
  workDay: string;
  /**
   * 数据列表
   */
  dataInfoList: AdTaskDataInfoListItem[];
  /**
   * 附件列表
   */
  attachmentInfoList: AttachmentInfoListItem[];
  emsDeviceIds: string[];
}

/**
 * 活动数据填报详情中 数据列表
 */
export interface AdTaskDataInfoListItem {
  dataNo: string;
  /**
   * 排放范围
   */
  emissionScope: string;
  /**
   * 排放类别
   */
  emissionCategory: string;
  /**
   * 温室气体源类型
   */
  ghgSourceName: string;
  /**
   * 排放源名称
   */
  sourceName: string;
  /**
   * 燃料、能源、填充物
   */
  materialName: string;
  /**
   * 是数据负责部门
   */
  department: string;
  /**
   * 活动数据取值
   */
  activityData: string | number;
  /**
   * 活动数据单位
   */
  activityDataUnit: string;
  /**
   * 填报方式
   */
  dataSource: string;
}

/**
 * 附件列表
 */
export interface AttachmentInfoListItem {
  /**
   * 附件名称
   */
  attachmentName: string;
  /**
   * 附件编号
   */
  attachmentNo: string;
  /**
   * 附件地址
   */
  url: string;
}

/**
 * 查询模型产品BOM清单 返回参数
 */

export interface ISupplierFormAttachment {
  id: string;
  attachmentId: string;
  attachmentType: 'EVIDENCE';
  attachmentName: string;
  attachmentUrl: string;
}
export interface GetListManufactureResult {
  nodeNo: string;

  nodeName: string;
  dataType: any;

  nodeCode: string;

  dosage: string;

  unit: string;

  remark: string;
  supplierFormAttachmentList: ISupplierFormAttachment[];
}

/**
 * 零部件BOM查看 返回列表
 */
export interface GetSupplierListBomResult {
  /**
   * 物料编号
   */
  nodeNo: string;
  /**
   * 物料名称
   */
  nodeName: string;
  /**
   * 材料类别或者牌号
   */
  materialCategory: string;
  /**
   * 用量
   */
  dosage: string;
  /**
   * 用量单位
   */
  unit: string;
  /**
   * 备注(加工工艺、型号)
   */
  remark: string;
}
